Skip to main content

Apa Saja Visibility Specifiers?

Setelah dasar fungsi, kita masuk ke aspek akses (visibility) dan jenis fungsi khusus di Sui Move.

Visibility Fungsi

Visibility menentukan apakah suatu fungsi bisa dipanggil dari luar module tempat ia didefinisikan. Ada dua utama yang relevan saat ini: private (default) dan public

Private Function

Secara default fungsi bersifat private: hanya bisa dipanggil dari dalam module yang sama.

module examples::math {

public struct Numbers has key { id: UID, a: u8, b: u8 }

public fun new(a: u8, b: u8, ctx: &mut TxContext) {
let numbers = Numbers { id: object::new(ctx), a, b };
}

fun add(n: Numbers) {
let sum = n.a + n.b; // hanya bisa dipakai internal
}
}

fungsi add bersifat private.

Public Function

Menambahkan keyword public membuat fungsi bisa dipanggil module lain.

module examples::math {

public struct Numbers has key { id: UID, a: u8, b: u8 }

public fun new(a: u8, b: u8, ctx: &mut TxContext) { let numbers = Numbers { id: object::new(ctx), a, b }; }

public fun add(n: Numbers) { let sum = n.a + n.b; }
}

Sekarang add bisa diakses dari luar.

Entry Function

entry menandai fungsi yang dapat dipanggil langsung via transaksi (menjadi titik masuk eksekusi). Syarat:

  1. Diberi keyword entry (bersama public biasanya: public entry).
  2. Tidak mengembalikan nilai.
  3. Parameter terakhir adalah referensi mutable ke TxContext: &mut TxContext.

Contoh dari pola Hello World:

public entry fun mint(ctx: &mut TxContext) {
let object = HelloWorldObject {
id: object::new(ctx),
text: string::utf8(b"Hello World!")
};
transfer::public_transfer(object, tx_context::sender(ctx));
}

ctx memberi akses ke informasi pengirim. transfer::public_transfer menyimpan object ke global storage tanpa nilai balik.

Penutup

Memahami private, public, dan entry penting untuk mendesain API module yang aman dan ergonomis. Berikutnya kita akan dalami objek (object) di Sui Move.